kimjeongwonnabout

[CS] 운영체제

운영체제는 어떻게 동작할까

운영체제

  • 사용자는 응용프로그램을 이용해 원하는 작업을 실행
  • 이 때 응용프로그램이 작업을 수행하기 위해서 시스템 자원을 요청.
  • 운영체제는 응용프로그램이 요청한 시스템 자원을 효율적으로 분배하여 제공/회수한다.

Interface

  • 사용자가 운영체제를 사용하기 위해서 인터페이스가 필요한데 Shell이 그 역할을 해줌
    • 명령어를 통해 운영체제를 사용할 수 있음
    • Shell 또한 일종의 응용프로그램
  • 응용프로그램이 운영체제를 사용하기 위해서는 API (Application Programming Interface)이 그 역할을 한다.
    • API는 프로그래밍 언어별로 제공되어야 한다.
    • 함수로 제공하여 호출을 통해 운영체제를 조작한다.
    • 보통은 함수들을 묶어서 라이브러리 형태로 제공.
  • Shell은 사용자, API는 응용프로그램이 운영체제를 사용하기 위한 인터페이스
    • 결국은 Shell도 API를 사용해서 동작한다.
  • 운영체제는 시스템 콜을 통해 운영체제의 기능을 사용할 수 있게 해준다.
    • API는 시스템 콜을 사용해 운영체제의 기능을 사용할 수 있다.
    • 시스템 콜은 운영체제를 직접 사용하기 때문에 사용방법이 까다롭고 어렵기 때문에 API로 사용하는 것이 인간 입장에서 편리하다.
  • 사용자 → 응용프로그램 → API → 시스템 콜 → 운영체제 → 하드웨어

시스템 콜과 API

  • 시스템 콜 : 운영체제가 제공하는 기능 호출 함수
    • 유닉스 계열은 보통 POSIX API를 기준으로 시스템콜을 정의
    • 커널 모드에서 실행
  • API : 각 언어별로 시스템 콜을 호출할 수 있는 Wrapper 함수
    • 사용자 모드에서 실행

CPU Protection Rings

  • CPU는 권한 모드를 갖고 있음
    • 사용자 모드 → 일반적인 명령을 실행할 수 있음
      • 응용 프로그램에서 사용
    • 커널 모드 → 특권 명령어 실행과 자원 접근을 가능하게 해줌
      • 운영체제에서 사용
  • 인텔 CPU 기준으로 Ring3 ~ Ring0까지 권한이 있음
    • Ring3을 보통 사용자 모드라고 지칭
    • Ring0를 보통 커널 모드라고 지칭
  • CPU에서는 현재 모드를 참조하여 권한이 없는 명령을 차단하여 보호
  • 사용자가 응용프로그램을 사용할 때 커널 모드에서 조작해야 하는 명령은 API와 시스템 콜을 통해 운영체제가 커널모드에서 CPU에게 명령을 전달
  • 보통 하드웨어에 접근해야 하는 경우 커널 모드에서 실행된다.

Kernel

  • 사전적 의미로 알맹이 / 핵심
  • 운영체제의 핵심적인 알맹이

Shell

  • 사전적 의미로 껍데기
  • 운영체제의 핵심적인 기능을 감싸는 껍데기